#include "regdia.h"
#include "ui_regdia.h"
#include <QFile>
#include <QPixmap>
#include <QSqlQuery>
#include <QSqlError>
#include <QDebug>

regDia::regDia(QWidget *parent, QSqlDatabase db) :
    QDialog(parent),
    ui(new Ui::regDia),
    db(db) // 初始化 db 成员变量
{
    ui->setupUi(this);
}

regDia::~regDia()
{
    delete ui;
}

void regDia::on_pushButton_clicked()
{
    if(sender() == ui->pushButton)
    {
        QString filter = "所有文件(*.*);;jpg(*.jpg);;png(*.png)";
        QString path = QFileDialog::getOpenFileName(this,"打开","D:/",filter);

        if(!path.isEmpty())
        {
            // 创建一个 QPixmap 对象并加载图片
            QPixmap pixmap(path);

            if(!pixmap.isNull())
            {
                // 将图片缩放到 label 的大小
                pixmap = pixmap.scaled(ui->label->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation);

                // 在 label 上显示图片
                ui->label->setPixmap(pixmap);

                // 读取图片数据
                QFile file(path);
                if (file.open(QIODevice::ReadOnly)) {
                    avatarData = file.readAll();
                    file.close();
                }
            }
            else
            {
                // 如果图片加载失败，给出提示
                QMessageBox::warning(this, "提示", "无法加载选择的图片");
            }
        }
        else
        {
            // 如果没有选择文件，给出提示
            QMessageBox::warning(this, "提示", "请选择要打开的文件");
        }
    }
}

void regDia::on_pushButton_2_clicked()
{
    QString inputId = ui->idEdit->text();
    QString inputPwd = ui->pwdEdit->text();

    if(inputId.isEmpty())
    {
        QMessageBox::warning(this,"警告", "请输入账号");
        return;
    }

    if(inputPwd.isEmpty())
    {
        QMessageBox::warning(this,"警告", "请输入密码");
        return;
    }

    QString exe_path = qApp->applicationDirPath();
    QString avatarDir = exe_path + "/avatar";
    QDir dir;
    if (!dir.exists(avatarDir)) {
        dir.mkpath(avatarDir);
    }

    QString avatarFilePath = avatarDir + "/" + inputId + ".jpg";
    QFile avatarFile(avatarFilePath);
    if (avatarFile.open(QIODevice::WriteOnly)) {
        avatarFile.write(avatarData);
        avatarFile.close();
    }

    // 预处理的SQL语句
    QString sql = "INSERT INTO login (id, password, avatar_path) VALUES (?,?,?)";

    // 预处理
    QSqlQuery sq(db);
    sq.prepare(sql);

    // 绑定参数
    sq.addBindValue(inputId);
    sq.addBindValue(inputPwd);
    sq.addBindValue(avatarFilePath);

    // 执行绑定后的SQL语句
    if(sq.exec())
    {
        QMessageBox::information(this,"通知","账号注册成功");
    }
    else // 失败
    {
        // 获取错误信息封装类
        QSqlError info = sq.lastError();
        QString text = info.text();
        QMessageBox::warning(this,"通知","账号注册失败");
        qDebug() << text;
    }
}
